package main

import (
	"fmt"
	"github.com/fsnotify/fsnotify"
	"github.com/gin-gonic/gin"
	"github.com/spf13/viper"
	"net/http"
)

func main() {
	viper.SetDefault("fileDir", "./")

	viper.SetConfigName("config")         //  配置文件名（不带扩展名）
	viper.SetConfigType("yaml")           //  配置文件的类型
	viper.AddConfigPath("/etc/appname/")  //  查找配置文件的路径（这里假设配置文件名为config.yaml）
	viper.AddConfigPath("$HOME/.appname") //  多次调用以添加多个搜索路径
	viper.AddConfigPath(".")
	err := viper.ReadInConfig()
	if err != nil {
		panic(fmt.Errorf("Fatal error config file: %s \n", err))
	}

	// 实时监控配置文件的变化
	viper.WatchConfig()
	// 当配置变化之后调用的一个回调函数
	viper.OnConfigChange(func(e fsnotify.Event) {
		// 配置文件发生变更之后会执行的回调操作
		fmt.Println("Config file changed:", e.Name)
	})

	r := gin.Default()
	r.GET("/version", func(c *gin.Context) {
		c.String(http.StatusOK, viper.GetString("version"))
	})
	r.Run(":8023")
}
